<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*
         * let和const存在块级作用域，var不存在
         * 每个块级作用域的成员相互独立，因为不同的块作用域可以定义相同的变量名
         */
        for(var i = 0; i < 5; i++) {
            setTimeout(() => {
                console.log(i); // 5 5 5 5 5
            })
        }
        for(let i = 0; i < 5; i++) {
            setTimeout(() => {
                console.log(i); // 0 1 2 3 4
            })
        }
        for(var i = 0; i < 5; i++) {
            (function(i) {
                setTimeout(() => {
                    console.log(i); // 0 1 2 3 4
                })
            })(i)
        }
    </script>
</body>
</html>